<?php
include("core.php");

if(OPENID_ENABLED==FALSE) { echo("Inactif"); exit(0); } //Quitte si OpenID désactivé.
	//Inclusion de la classe cache
	initclass("cache");
	$cache=new Cache();
	
	//Récupération du cookie
	$id=$_COOKIE['gzid'];
	
	//Si l'ID n'existe pas, on bloque
	if(!$cache->is_id($id)){
		echo("Le jeton d'identification est faux.");
		exit(0);
	}
	
	//Récupération du hash correspondant
	$hash=$cache->get($id,"server");
	
	//Si le hash est vide, on arrête
	if(empty($hash)){ exit(0); }

//      oid_catch.php

// Includes required files
require_once "Auth/OpenID/Consumer.php";
require_once "Auth/OpenID/FileStore.php";
require_once "Auth/OpenID/AX.php";

// Starts session (needed for YADIS)
session_start();

// Create file storage area for OpenID data
$store = new Auth_OpenID_FileStore('./tmp');

// Create OpenID consumer
$consumer = new Auth_OpenID_Consumer($store);

// Create an authentication request to the OpenID provider
$response = $consumer->complete(SERVER_URL.'/yahoo2.php');

if ($response->status == Auth_OpenID_SUCCESS) {
        // Get registration informations
        $ax = new Auth_OpenID_AX_FetchResponse();
        $obj = $ax->fromSuccessResponse($response);

	$data=$obj->data;
	$name=$data['http://axschema.org/namePerson/first'][0];
	$name=$name.' '.$data['http://axschema.org/namePerson/last'][0];
	$email=$data['http://axschema.org/contact/email'][0];

//Ajout des données à la base de données
	initclass("openid");
	$oid=new OpenID();
	
	$oid->add("yahoo:".$email,"Yahoo!",$name,$email);
	$login="yahoo:".$email;

	//Création du checksum des informations renvoyés au serveur demandeur par l'intermédiaire du client
	$id=$_COOKIE['gzid'];
	$checksum=sha1($hash.$login);
	
	//Suppression du hash de la base
	$cache->del($id,"server");
	
	//Lecture de l'adresse retour passée en cookie
	$return=$_COOKIE['return'];
	
	//Création de l'URL de retour
	$url=$return."?login=".$login."&checksum=".$checksum."&id=".$id;
	
	//Redirection
	header("Location: ".$url);

} else {
  // Failed
	echo("Echoué");
	setcookie("gzid");
}

?>
